home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / util / misc / OpenLibCounter.lha / OpenLibraryCounter.doc < prev   
Text File  |  1997-09-22  |  9KB  |  261 lines

  1.  
  2.         OpenLibraryCounter V1.13 (1997-Sep-22)
  3.  
  4.  
  5. Distribution conditions
  6. ~~~~~~~~~~~~~~~~~~~~~~~
  7. This program is Copyright ©1996-1997 by Peter Mattsson. It may be
  8. distributed freely under the condition that no profit is gained from
  9. its distribution.
  10.  
  11. Permission is granted to distribute this package by Bulletin Board
  12. systems or network sites, under the condition no fee is charged on
  13. downloading it. Permission is also granted to put this package on
  14. Aminet CDs. Other CD compilers have to contact the author. Permission
  15. is also granted to computer magazines to put this package on their
  16. coverCDs/coverdisks, under the condition the author is sent a free
  17. copy of the CD-edition (if available) of the magazine where this
  18. package is included.
  19.  
  20. All files that are part of this package have to be distributed
  21. together and none of them may be changed in any way other than
  22. archiving or crunching.
  23.  
  24. This program is distributed as Freeware.
  25.  
  26.  
  27. Disclaimer
  28. ~~~~~~~~~~
  29. This package is provided "as is" without warranty of any kind. The
  30. author assumes no responsibility or liability whatsoever for any
  31. damage or dataloss caused by using this package.
  32.  
  33.  
  34. Introduction
  35. ~~~~~~~~~~~~
  36. OpenLibraryCounter will tell you what libraries are opened and how
  37. many times they are opened.
  38.  
  39. This may be useful in order to determine what libraries in your
  40. overcrowded LIBS: actually are used.
  41.  
  42. It can also be amusing, did you know there are programs trying to
  43. open exec.library? :) I think it was a Blitz Basic program that
  44. caused that entry.
  45.  
  46.  
  47. Requirements
  48. ~~~~~~~~~~~~
  49. OpenLibraryCounter requires:
  50.  
  51. * An Amiga or an Amiga emulator ;)
  52.  
  53. * Kickstart V37+
  54.  
  55. * 68000+
  56.  
  57. * A LIBS: crowded with libraries ;)
  58.  
  59. * PhxAss or a compatible assembler if you want to assemble the
  60.   sourcecode
  61.  
  62. OpenLibraryCounter has been tested on my computer, an Amiga 1200 with
  63. Kickstart 3.1, Blizzard 1260, 20MB memory, 2.1GB SCSI harddisk, 4x
  64. CD-ROM, 210MB IDE harddisk, an extra diskdrive, a Wico Super Threeway
  65. joystick, a DATIC mouse and an Algonet mousepad.
  66.  
  67. It has also been tested on an friends Amiga 4000 with Kickstart 3.1,
  68. Powerchanger 040-28, 18MB, GVP Spectrum 28/24, Trumphcard Pro, 1GB
  69. SCSI, 420MB IDE, 8x CD-ROM and a Commodore A500 mouse running on an
  70. Algonet mouse pad.
  71.  
  72.  
  73. Installation
  74. ~~~~~~~~~~~~
  75. Copy the OpenLibraryCounter executable wherever you want, preferrable
  76. somewhere in your path. I keep mine in C:.
  77.  
  78. If you want to install the documentation, copy it to HELP:English/ or
  79. wherever you want.
  80.  
  81. If you want to start OpenLibraryCounter every time you boot your
  82. computer, insert the following line in your startup-sequence/
  83. user-startup:
  84.  
  85. Run <NIL: >NIL: OpenLibraryCounter
  86.  
  87. Don't put it in the startup-sequence if you don't know what you are
  88. doing though! Putting it in user-startup is safer but won't catch
  89. libraries used by programs started in the startup-sequence. If you
  90. put it in the startup-sequence make sure it is started after
  91. PatchControl or any similar program. And it should of course be
  92. started after SetPatch.
  93.  
  94.  
  95. Usage
  96. ~~~~~
  97. OpenLibraryCounter L=LOGFILENAME,I=SAVEINTERVAL
  98.  
  99. LOGFILENAME: This is the file where the list of libraries is saved.
  100.              The default is "S:LibraryOpenCount".
  101.  
  102. SAVEINTERVAL: This is the number of libraries to be opened between
  103.               each save of the library list. Default is 500.
  104.  
  105. To find out what libraries is really used in your LIBS: there are two
  106. ways:
  107.  
  108. 1. Start OpenLibraryCounter and then run every program on your
  109.    harddisk. Then quit OpenLibraryCounter and check the log file to
  110.    see what libraries was opened. This is not 100% safe though, as
  111.    some programs only opens certain libraries when you activate a
  112.    certain function in the program.
  113.  
  114. 2. Put OpenLibraryCounter in your startup-sequence/user-startup and
  115.    use your computer as normal during a month or two. Now you can be
  116.    quite sure that all libraries not mentioned in the log file is not
  117.    used.
  118.  
  119. In both cases I recommend that you don't actually delete unused
  120. libraries. Put them in another directory instead and see if any
  121. program complains. After some time, maybe a month, you can probably
  122. delete them.
  123.  
  124. To quit OpenLibraryCounter, send it a CTRL-C signal.
  125.  
  126.  
  127. The log file format
  128. ~~~~~~~~~~~~~~~~~~~
  129. The log file  is saved in ASCII for easy viewing. Every line in the
  130. file starts with the name of the library, followed by a TAB character
  131. (ASCII code 9), followed by the number of times the library has been
  132. opened, followed by a linefeed (ASCII code 10).
  133.  
  134. Do not edit this file if you don't know exactly what you are doing!
  135.  
  136. However using the Sort command to sort the log file is generally
  137. safe. Just make sure OpenLibraryCounter is not running when you sort
  138. the file.
  139.  
  140.  
  141. How does it work
  142. ~~~~~~~~~~~~~~~~
  143. OpenLibraryCounter will start with loading in the logfile and setting
  144. up a message port. Then it patches OpenLibrary() in exec.library. The
  145. patch will allocate a message and copy the library name to this
  146. message every time a library is successfully opened. The message is
  147. then sent to OpenLibraryCounter that will update its list of
  148. libraries and free the message. Every now and then the list of
  149. libraries is saved to the logfile.
  150.  
  151. When OpenLibraryCounter receives a CTRL-C signal it will first of all
  152. save the libraries list. Then OpenLibraryCounter will remove the
  153. OpenLibrary() patch. Then it waits 10 seconds to be really sure that
  154. no task still executes a OpenLibrary() call. Then all messages that
  155. might have appeared at the message port are removed and freed. Then
  156. the program exits. This is not 100% safe, but it is close.
  157.  
  158. Note that if another program patches OpenLibrary() after
  159. OpenLibraryCounter is started and you then exit OpenLibraryCounter,
  160. this might lead to unexpected behaviour if you are not using a
  161. program like PatchControl (part of the MCP archive).
  162.  
  163.  
  164. The sourcecode
  165. ~~~~~~~~~~~~~~
  166. The sourcecode of OpenLibraryCounter is included so you can see what
  167. you are running on your computer. Unfortunately it is not very well
  168. commented, it is hardly commented at all.
  169.  
  170. If you want to use parts of my sourcecode in your own programs, feel
  171. free to do so. But please contact me and tell me if you do use it.
  172.  
  173.  
  174. Bugs/limitations
  175. ~~~~~~~~~~~~~~~~
  176. Currently OpenLibraryCounter suffers from the following bugs and
  177. limitations:
  178.  
  179. * Sometimes the log file gets corrupted. I don't know why yet. When
  180.   the log file gets corrupted some entries will be lost next time
  181.   OpenLibraryCounter is started. If somebody finds a foolproof way to
  182.   reproduce this bug, please contact me.
  183.  
  184. * Library names is treated as illegal if they are longer than 1024
  185.   characters, including their path.
  186.  
  187. * Library names is also treated as illegal if there is a TAB
  188.   character in the library name. Shouldn't cause any problems.
  189.  
  190. * The removal of the patch is not 100% safe. It is very close though,
  191.   I've never had a crash when quitting OpenLibraryCounter.
  192.  
  193. * The counter for each library is limited to a 32-bit unsigned
  194.   integer. That means if a library is opened more than 4.294.967.295
  195.   times, the counter will wrap to 0. In practical terms it means that
  196.   if a library is opened 5,1 times per second (as dos.library is on
  197.   my computer) it will take more than 26 years before the counter
  198.   wraps.
  199.  
  200.  
  201. History
  202. ~~~~~~~
  203. 1996-May-05         Project started.
  204.  
  205. 1996-May-12  V1.0   Not publicly released.
  206.  
  207. 1996-May-14  V1.01  Fixed race condition problems.
  208.                     Not publicly released.
  209.  
  210. 1997-Sep-09  V1.1   All recursive calls were removed to save stack
  211.                     space.
  212.                     Logfilename and save interval is now user
  213.                     definable.
  214.                     A couple of potential bugs were removed.
  215.                     Removal of the patch is safer.
  216.                     Not publicly released.
  217.  
  218. 1997-Sep-09  V1.11  The OpenLibrary() patch uses less stack space.
  219.                     Delimiter character in log file changed from
  220.                     SPACE to TAB.
  221.                     First public release.
  222.  
  223. 1997-Sep-12  V1.12ß OpenLibraryCounter now should only require a
  224.                     68000 processor. As a bonus the executable got
  225.                     smaller in the process.
  226.                     Not publicly released.
  227.  
  228. 1997-Sep-22  V1.13  The reading of the log file is made much safer.
  229.                     OpenLibraryCounter shouldn't crash now if the log
  230.                     file is corrupted.
  231.                     Second public release.
  232.  
  233.  
  234. Todo list
  235. ~~~~~~~~~
  236. * Make the removal of the patch even safer.
  237. * Store what programs open what libraries.
  238. * Store the library names in a binary search tree internally to cut
  239.   search times.
  240.  
  241.  
  242. Contact address
  243. ~~~~~~~~~~~~~~~
  244. Send bug reports, suggestions, magazines, PowerUP cards, Ferraris,
  245. etc, etc, to:
  246.  
  247. E-mail: petermat@algonet.se  (preferred way of communication)
  248.  
  249. Snail-mail:
  250.     Peter Mattsson
  251.     Vinberga 7
  252.     S-373 02 Ramdala
  253.     Sweden
  254.  
  255. Homepage URL: http://www.algonet.se/~petermat/
  256.  
  257.  
  258. Copyrights
  259. ~~~~~~~~~~
  260. MCP is Copyright ©1994-1997 by ALiENDESiGN.
  261.